package models

import (
	"time"

	"gorm.io/gorm"
)

// DialogContent 对应 dialog_contents2 表
type DialogContent struct {
	ID           int          `gorm:"column:id;primaryKey" json:"id"`
	SubTagID     int          `gorm:"column:sub_tag_id" json:"-"`
	Title        string       `gorm:"column:title" json:"title"`
	SourceID     string       `gorm:"column:source_id" json:"-"`
	IsUnlocked   bool         `gorm:"column:is_unlocked" json:"-"`
	AvatarTarget string       `gorm:"column:avatar_target" json:"-"`
	AvatarMy     string       `gorm:"column:avatar_my" json:"-"`
	CreatedAt    time.Time    `gorm:"column:created_at" json:"-"`
	YSourceID    int          `gorm:"column:y_source_id" json:"-"`
	YTitle       string       `gorm:"column:y_title" json:"y_title,omitempty"`
	CopyNum      int          `gorm:"-" json:"copy_num"` // 假设需要，但表中没有此字段
	Hidden       bool         `gorm:"-" json:"hidden"`   // 假设需要，但表中没有此字段
	Lines        []DialogLine `gorm:"foreignKey:DialogID" json:"item"`
}

func (DialogContent) TableName() string {
	return "dialog_contents2"
}

// DialogLine 对应 dialog_lines2 表
type DialogLine struct {
	ID        int       `gorm:"column:id;primaryKey" json:"-"`
	DialogID  int       `gorm:"column:dialog_id" json:"-"`
	Speaker   string    `gorm:"column:speaker" json:"-"`
	Content   string    `gorm:"column:content" json:"content"`
	Sequence  int       `gorm:"column:sequence" json:"-"`
	CreatedAt time.Time `gorm:"column:created_at" json:"-"`
	Gender    int       `gorm:"-" json:"gender"` // 根据speaker转换
}

func (DialogLine) TableName() string {
	return "dialog_lines2"
}

// 将speaker转换为gender
func (d *DialogLine) AfterFind(tx *gorm.DB) (err error) {
	if d.Speaker == "my" {
		d.Gender = 1 // 假设my对应男性
	} else {
		d.Gender = 0 // target对应女性
	}
	return
}
